package com.zhangye.test.controller;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON;
import com.zhangye.test.model.Admin;
import com.zhangye.test.model.Category;
import com.zhangye.test.model.EasyAr;
import com.zhangye.test.model.Interview;
import com.zhangye.test.model.Region;
import com.zhangye.test.util.PageInfo;
import com.zhangye.test.util.Result;

/**
 * ar列表
 * 作者： 张叶
 * 创建时间：2018年5月11日  上午11:42:53
 */
@Controller
@RequestMapping("admin/ar")
public class ArController extends BaseController{
	

	
	/**
	 * 修改页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:05
	 */
	@RequestMapping("/updateInterview/{id}")
	public String updateInterview(@PathVariable("id") Long id,Model model){
		List<Interview> list = interviewService.selectByWhere(" and easy_ar_id = " + id);
		model.addAttribute("counts",list.size());
		model.addAttribute("id",id);
		return "admin/ar/updateInterview";
	}
	

	
	/**
	 * 修改次数
	 * 作者： 张叶
	 * 创建时间：2018年9月27日  下午4:50:08
	 */
	@ResponseBody
	@RequestMapping(value = "/updateInterview", method = RequestMethod.POST)
	public String updateInterview(Long id,Integer counts) throws Exception{
		EasyAr ea = easyArService.selectByPrimaryKey(id);
		if(ea != null && !"".equals(ea)){
			Interview iv;
			for(int i = 0 ; i < counts ; i ++){
				iv = new Interview();
				iv.setTelphoneUuid(i + "add");
				iv.setEasyArId(id);
				iv.setCreatedAt(new Date());
				interviewService.insert(iv);
			}
		}
		return "success";
	}
	
	
	
	/**
	 * ar列表
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:28
	 */
	@RequestMapping("/list")
	public String list(Model model){
		List<Category> list = categoryService.selectByWhere(" and level = 1");
		model.addAttribute("category",list);
		List<Region> listR = regionService.selectByWhere(" and level = 1");
		model.addAttribute("Region",listR);
		return "admin/ar/list";
	}
	
	
	/**
	 * 分页显示 
	 * 作者：张叶 
	 * 时间：2016年9月7日 上午11:58:15
	 */
	@ResponseBody
	@RequestMapping(value = "arJson", method = RequestMethod.POST)
	public JSON arJson(PageInfo pageInfo, Integer rows, Integer page,
			String sidx, String sord, Model model, String aName,
			String categoryCode, String regionCode) {
		// 分页信息
		if (pageInfo == null) {
			pageInfo = new PageInfo();
		}
		if (pageInfo.getPage() < 2
				|| pageInfo.getPage() >= pageInfo.getTotalPage()) {
			pageInfo.setCount(0);
		}
		if (rows != null) {// 每页显示条数
			pageInfo.setPageSize(rows);
		}
		if (page != null) {// 当前页
			pageInfo.setPage(page);
		}

		// 排序
		String order = " order by create_at desc";
		if (sidx != null && sidx != "") {// 排序字段
			order = " order by " + sidx + " ";
			if (sord != null && sord != "") {// 排序
				order += sord;
			}
		}

		// 搜索条件
		String where = "1 = 1";
		if (aName != null && !"".equals(aName)) {
			where += " and name like '%" + aName + "%'";
		}
		if(categoryCode != null && !"".equals(categoryCode)){
			where += " and category_code like '" + categoryCode + "%'";
		}
		if(regionCode != null && !"".equals(regionCode)){
			where += " and region_code like '" + regionCode + "%'";
		}
		where += " and status = 'on'";
		List<Map<String, Object>> list = easyArService.selectByPage(pageInfo,where, order);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		for(int i = 0 ; i < list.size() ; i ++){
			Date createTime = (Date) list.get(i).get("create_at");
			list.get(i).put("create_at", sdf.format(createTime));
			String videoUrl = list.get(i).get("video_url").toString();
			videoUrl = videoUrl.split(",")[0];
			list.get(i).put("video_url", videoUrl);
		}
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("total", pageInfo.getTotalPage());
		data.put("list", list);
		return (JSON) JSON.toJSON(data);
	}

	
	/**
	 * 添加页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:36
	 */
	@RequestMapping("/addPage")
	public String addPage(Model model){
		String where = " and level = 1 and code != '29'";
		List<Category> list = categoryService.selectByWhere(where);
		model.addAttribute("category",list);
		return "admin/ar/add";
	}

	
	/**
	 * 添加功能
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:06:57
	 * @throws Exception 
	 */
	@ResponseBody
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public Result add(@RequestParam(value = "imageUrls", required = false) MultipartFile imageUrls,
			@RequestParam(value = "videoUrls", required = false) MultipartFile videoUrls,
			EasyAr ea) {
		Result result = new Result();
		try {
			if(imageUrls.getBytes().length < 2097152){
				Admin a = (Admin)session.getAttribute("currentUser");
				ea.setAdminId(a.getId());
				String video = "";
				if(videoUrls.isEmpty()){
					video = "";
				}else{
					video = qiniuService.upload("file", videoUrls.getOriginalFilename(),videoUrls.getBytes());
				}
				String videoUrl = ea.getVideoUrl();
				if(videoUrl != null && !"".equals(videoUrl)){
					if(!"".equals(video)){
						videoUrl = video + "," + videoUrl;
					}
				}else{
					videoUrl = video;
				}
				ea.setVideoUrl(videoUrl);
				ea.setType(0);
				int i = easyArService.insert(ea,imageUrls);
				if(i == 0 ){
					result.code = 0;
					result.message = "添加成功";
				}else if(i == 1){
					result.code = 1;
					result.message = "系统错误，添加失败";
				}else if(i == 2){
					result.code = 2;
					result.message = "已有相似图片，请重新上传";
				}
			}else {
				result.code = 3;
				result.message = "请上传小于2M的图片";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	
	/**
	 * 修改页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:05
	 */
	@RequestMapping("/updatePage/{id}")
	public String updatePage(@PathVariable("id") Long id,Model model){
		
		EasyAr ea = easyArService.selectByPrimaryKey(id);
		model.addAttribute("ea",ea);
		return "admin/ar/update";
	}
	
	
	/**
	 * 修改功能
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:14
	 * @throws IOException 
	 * @throws JSONException 
	 */
	@ResponseBody
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public String update(EasyAr ea) throws Exception{
		
		try {
			EasyAr e = easyArService.selectByPrimaryKey(ea.getId());
			e.setName(ea.getName());
			int i = easyArService.update(e);
			if(i == 0 ){
				return "success";
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "fail";
		
	}
	
	
	/**
	 * 删除
	 * 作者： 张叶
	 * 创建时间：2018年5月16日  上午9:57:52
	 */
	@ResponseBody
	@RequestMapping(value = "/delAr/{id}", method = RequestMethod.POST)
	public String delAr(@PathVariable Long id){
		try {
			Admin admin = adminService.getCurrent();
			
			int i = easyArService.deleted(id,admin);
			if(i > 0 ){
				return "success";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "fail";
	}
	
	

	
	/**
	 * 修改状态，是否启用
	 * 作者： 张叶
	 * 创建时间：2018年9月3日  下午3:00:54
	 */
	@ResponseBody
	@RequestMapping("/updateActive/{id}")
	public String updateActive(@PathVariable("id") Long id,Model model){
		EasyAr ea = easyArService.selectByPrimaryKey(id);
		try {
			ea.setActive(Math.abs(ea.getActive() -1));
			int i = easyArService.update(ea);
			if(i == 0 ){
				return "success";
			}
		} catch (Exception e) {
			return "fail";
		}
		return "fail";
	}
	
	
	/**
	 * 修改图片
	 * ，判断是否有相似
	 * 作者： 张叶
	 * 创建时间：2018年9月3日  下午2:30:38
	 */
	@ResponseBody
	@RequestMapping(value = "/upload/{id}", method = RequestMethod.POST)
	public Result updateFile(
			@RequestParam(value = "file", required = false) MultipartFile file,
			@PathVariable Long id) throws Exception {
		Result result = new Result();
		EasyAr ea = easyArService.selectByPrimaryKey(id);
		if (ea != null && !"".equals(ea)) {

			int i = easyArService.updateImageUrl(id, file);
			if(i > 0){
				result.code = 0;
				result.message = "修改成功";
			}else{
				result.code = 1;
				result.message = "系统错误，修改失败";
			}
		}else{
			result.code = 2;
			result.message = "该作品或已被删除，请刷新后重试";
		}
		return result;
	}

}
